1
พื้นฐานการจัดเก็บข้อมูลในหน่วยความจำแบบฮีพ
AI034Lesson 8
00:00

โครงสร้างของการเติบโต

คอลเลกชันของเรสต์ เช่น Vec<T> และ String, ไม่ใช่ชนิดพื้นฐาน แต่เป็นโครงสร้างที่กำหนดโดยไลบรารี ซึ่งอยู่ในโมดูล std โมดูล รากฐานนี้กำหนดวิธีที่เรสต์จัดระเบียบข้อมูลผ่านระบบโมดูล และจัดการหน่วยความจำผ่าน RAII (การได้มาซึ่งทรัพยากรคือการตั้งต้น). ในขณะที่ชนิดพื้นฐานอยู่บนสแตก คอลเลกชันจะใช้ หน่วยความจำแบบฮีพ เพื่อการเติบโตแบบไดนามิก หมายความว่าหน่วยความจำต้องถูกจัดการอย่างชัดเจนผ่าน Drop _trait.

การแก้ไขโมดูลและการมองเห็น

คอมไพเลอร์เรสต์แปลงโครงสร้างโมดูลเริ่มจากจุดเริ่มต้นของแคร์ต (src/lib.rs หรือ src/main.rs). การประกาศเช่น mod front_of_house; จะกระตุ้นให้คอมไพเลอร์ค้นหา src/front_of_house.rs หรือ src/front_of_house/mod.rs. การใช้ pub ตัวระบุและนำกลับมาใช้ใหม่ (pub use) ทำให้ข้อมูลที่ถูกบรรจุไว้ในหน่วยความจำแบบฮีพสามารถเชื่อมต่อได้อย่างปลอดภัยผ่านเส้นทางที่เหมาะสม

ต้นไม้การแก้ไขไฟล์src/lib.rssrc/front_of_house.rs- hosting.rspub use crate::front_of_house;let list = Vec::new();🦀?จุดอันตราย: ข้อขัดแย้งระหว่างไฟล์ mod.rs กับ name.rsทำให้เกิดข้อผิดพลาดของคอมไพเลอร์ (หน้า 183)

ทันทีที่ขอบเขตของโมดูลสิ้นสุดลง คำสั่ง Drop จะฟื้นคืนหน่วยความจำแบบฮีพโดยอัตโนมัติ: $$Memory_{reclaimed} = \sum Drop(Elements)$$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>